﻿using System;
using Abp.Application.Services;
using Abp.Application.Services.Dto;
using ARchGL.Platform.Dtos;
using ARchGL.Platform.Juneng.ViewDtos;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace ARchGL.Platform.Juneng
{
    /// <summary>
    /// 项目服务 接口
    /// </summary>
    public interface IProjectsAppService : IApplicationService
    {
        #region 项目

        Task CreateOrModifyProject(ProjectsDto input);

        Task RemoveProject(Guid input);

        Task<PagedResultDto<ProjectsDto>> QueryProjectPagedList(ProjectsInput input);

        Task<PagedResultDto<ProjectsDto>> QueryProjectPagedListForCheck(ProjectsInput input);

        Task MarkProject(Guid input);

        Task<ProjectDetailsDto> QueryProjectDetailById(Guid input);

        dynamic GetEnumProjectTypeList();

        dynamic GetEnumProjectStatusList();

        #endregion

        #region 项目模型

        Task CreatOrModifyModel(ProjectModelsDto input);

        Task RemoveModel(Guid input);

        Task<PagedResultDto<ProjectModelsDto>> QueryModelsPagedList(ProjectsModelsInput input);

        #endregion

        #region 项目成员

        Task<Guid> AddOrModifyUserToProject(AddOrModifyUserToProjectInput input);

        Task RemoveUserOnProject(RemoveUserOnProjectInput input);

        Task<PagedResultDto<ViewDtos.ProjectUsersDto>> QueryProjectUsersPagedList(ProjectUsersInput input);

        Task BatchRemoveUserOnProject(BatchRemoveUserOnProjectInput input);

        Task<int> DoCheckProjectUserTask();
        #endregion

        #region 项目模型视图

        Task<Guid> CreatOrModifyView(ProjectViewPortsInput input);

        Task RemoveView(Guid input);

        Task BatchRemoveView(List<Guid> input);

        Task<PagedResultDto<ProjectViewPortsDto>> QueryViewsPagedList(ProjectsModelsInput input);

        #endregion
    }
}
